<?php namespace system\model;
use hdphp\model\Model;
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/9/8 0008
 * Time: 17:45
 */
//分类管理模型
class Category extends Model{
//    声明操作数据表
  protected $table="category";
//    自动验证
    protected $validate=[
        //        分类名称自动验证
        ['cname','required',"分类名称不能为空",3,3],
        ['ctitle','required',"分类名称不能为空",3,3],
        ['cdes','required',"分类描述不能为空",3,3],
        ['ckeywords','required',"分类关键字不能为空",3,3],
//        数字自动验证
        ['csort','num:1,3000',"分离排序必须为数字",3,3]
    ];
//    添加分类
    public function store(){
//        自动验证
        if(!$this->create()) return false;
//        add默认的是添加data属性里面的东西
//        $this->add()添加成功后是当前这条的主键id
//        p($this->data);die;
        return $this->add();
    }
//    处理所属分类
    public function getCateData($cid)
    {
//       先找出所有子集
        $cids = $this->getSon($this->get(),$cid);
//        把自己追加进去
        $cids[] = $cid;
//        获取除了自己和自己子集的全部数据
        $data = $this->whereNotIn('cid',$cids)->get();
//        返回$data除了自己和自己子集的全部数据按cname字段获取树状结构
        return Data::tree($data,'cname');
    }
    //递归找子集
    public function getSon($data,$cid)
    {
//        设置一个静态变量$temp为空格数组
        static $temp = [];
//        循环数据库$data
        foreach($data as $k=>$v)
        {

            if($v['pid'] == $cid)
            {
//               这个时候说明$v['pid']是$cid的儿子
                $temp[] = $v['cid'];
//                获取当前$v['cid']里所有孙子
                $this->getSon($data,$v['cid']);
            }
        }
        return $temp;
    }
    //编辑分类
    public function edit()
    {
        if(!$this->create()) return false;
//        执行save方法进行修改的时候，需要以post发送主键id
//       @@@@@@@ form表单字段跟数据库保持一致@@@@@@
        return $this->save();
    }
}

